package cn.zebra.dev.admin.module.admin.service;

import cn.zebra.dev.admin.module.admin.entity.AdminEntity;
import cn.zebra.dev.base.module.admin.service.BaseAdminService;
import cn.zebra.dev.ibatis.plus.service.IService;
import cn.zebra.dev.ibatis.plus.utils.PageUtils;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;

/**
 * 后台用户
 *
 * @author runnable
 * @date 2019-09-07 16:00:10
 */
public interface AdminService extends IService<AdminEntity>, BaseAdminService<AdminEntity> {
    /**
     * 通过搜索条件查找分页列表
     *
     * @param params - key(查询条件)
     * @return 分页列表
     */
    PageUtils<AdminEntity> findPage(Map<String, Object> params);

    /**
     * 根据后台用户id和salt和当前密码重置密码信息
     *
     * @param adminId  后台用户id
     * @param salt     盐
     * @param password 当前用户密码(明文)
     * @return 成功重置返回true  失败返回false
     */
    @Override
    Boolean resetPassword(Long adminId, String salt, String password);

    @Override
    AdminEntity findById(Long id);

    @Transactional(rollbackFor = Exception.class)
    void saveAdmin(AdminEntity entity, Long createId);

    void saveAdminAndRole(AdminEntity entity, Long createId);

    void updateAdminAndRole(AdminEntity entity, Long createId);

    void updateAdmin(Long id, AdminEntity entity, Long updateId);

    /**
     * 根据后台用户id删除后台用户与角色绑定信息
     *
     * @param id 后台用户id
     * @return 删除成功返回True 失败返回False
     */
    Boolean deleteAdmin(Long id);

    /**
     * 根据管理员id集合，查询出管理员集合
     * @param adminIds
     * @return
     */
    List<AdminEntity> findByIds(List<Long> adminIds);
}

